GtkNotebook: emit child-notify::position on drag 'n drop reorder
authorClaudio Saavedra <csaavedra@igalia.com>
Tue, 14 Feb 2012 15:26:03 +0000 (17:26 +0200)
committerClaudio Saavedra <csaavedra@igalia.com>
Tue, 14 Feb 2012 23:05:12 +0000 (01:05 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=669116

gtk/gtknotebook.c

index bd5a3c175656784c8992baf67500d6280ee08c6c..8f9221135eeaf4425066fd54844b34292e07d9aa 100644 (file)
@@ -3185,7 +3185,7 @@ gtk_notebook_stop_reorder (GtkNotebook *notebook)
     {
       if (priv->during_reorder)
         {
-          gint old_page_num, page_num;
+          gint old_page_num, page_num, i;
           GList *element;
 
           element = get_drop_position (notebook);
@@ -3194,9 +3194,16 @@ gtk_notebook_stop_reorder (GtkNotebook *notebook)
           gtk_notebook_child_reordered (notebook, page);
 
           if (priv->has_scrolled || old_page_num != page_num)
-            g_signal_emit (notebook,
-                           notebook_signals[PAGE_REORDERED], 0,
-                           page->child, page_num);
+           {
+             for (element = priv->children, i = 0; element; element = element->next)
+               {
+                 if (MIN (old_page_num, page_num) <= i && i <= MAX (old_page_num, page_num))
+                   gtk_widget_child_notify (((GtkNotebookPage *) element->data)->child, "position");
+               }
+             g_signal_emit (notebook,
+                            notebook_signals[PAGE_REORDERED], 0,
+                            page->child, page_num);
+           }
 
           priv->has_scrolled = FALSE;
           priv->during_reorder = FALSE;